home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 November / Chip Kasım 2000.iso / prog / share / 11 / setup.exe / %MAINDIR% / DEMOS / Common / CITPAK.BAS
Encoding:
BASIC Source File  |  2000-09-07  |  19.5 KB  |  306 lines

  1. Attribute VB_Name = "CrescentInternetToolPak"
  2. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3. '~~~ SUBJECT:     Crescent Internet ToolPak method/event state and error
  4. '~~~                                                    constants
  5. '~~~ AUTHOR:      Stephen R. Casella
  6. '~~~ DATE:        January 10, 1996
  7. '~~~ MODIFIED:    December 9, 1996
  8. '~~~
  9. '~~~ DESCRIPTION: Crescent Internet ToolPak method/event state constants
  10. '~~~              fired by the EventStateChanged/MethodStateChanged event
  11. '~~~              and found in the EventState/MethodState property.
  12. '~~~              The numbering scheme allows the programmer to monitor
  13. '~~~              multiple protocols within a project.
  14. '~~~ ADDITIONS:   Two additional function were added, WSAErrDescription() and
  15. '~~~              InternetErrDescription().  Both of these funtions will return
  16. '~~~              a long string description of the error code that is passed,
  17. '~~~              and a short name (the constant).
  18. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19.  
  20. '~~~ Event State Constants in CIFTP found CIFTP.OCX
  21. Global Const CIFTP_FCLOSED = 100
  22. Global Const CIFTP_SCLOSED = 101
  23. Global Const CIFTP_ACCLOSED = 102
  24. Global Const CIFTP_DCCLOSED = 103
  25. Global Const CIFTP_ACCONN = 104
  26. Global Const CIFTP_DCCONN = 105
  27. Global Const CIFTP_DPORTSET = 106
  28. Global Const CIFTP_LBPOP = 107
  29.  
  30. '~~~ Method State Constants in CIFTP found CIFTP.OCX
  31. Global Const CIFTP_PASS = 1
  32. Global Const CIFTP_USER = 2
  33. Global Const CIFTP_SYST = 3
  34. Global Const CIFTP_TYPE = 4
  35. Global Const CIFTP_LIST = 5
  36. Global Const CIFTP_QUIT = 6
  37. Global Const CIFTP_PASV = 7
  38. Global Const CIFTP_RETR = 8
  39. Global Const CIFTP_STOR = 9
  40. Global Const CIFTP_CWD = 10
  41. Global Const CIFTP_PWD = 11
  42. Global Const CIFTP_NLST = 12
  43. Global Const CIFTP_CDUP = 13
  44. Global Const CIFTP_APPE = 14
  45.  
  46. '~~~ Event State Constants in CIHTTP found CIHTTP.OCX
  47. Global Const CIHTTP_LBPOP = 120
  48. Global Const CIHTTP_CONN = 121
  49. Global Const CIHTTP_SCLOSED = 122
  50. Global Const CIHTTP_CONNCLOSED = 123
  51. Global Const CIHTTP_FCLOSED = 124
  52.  
  53. '~~~ Method State Constants in CIHTTP found CIHTTP.OCX
  54. Global Const CIHTTP_GET = 14
  55. Global Const CIHTTP_HEAD = 15
  56. Global Const CIHTTP_POST = 16
  57.  
  58. '~~~ Event State Constants in CINEWS found CINEWS.OCX
  59. Global Const CINEWS_LBPOP = 130
  60. Global Const CINEWS_CONN = 131
  61. Global Const CINEWS_SCLOSED = 132
  62. Global Const CINEWS_CONNCLOSED = 133
  63. Global Const CINEWS_FCLOSED = 134
  64. Global Const CINEWS_ARECEIVED = 135
  65.  
  66. '~~~ Method State Constants in CINEWS found CINEWS.OCX
  67. Global Const CINEWS_ARTICLE = 35
  68. Global Const CINEWS_GROUP = 36
  69. Global Const CINEWS_STAT = 37
  70. Global Const CINEWS_LAST = 38
  71. Global Const CINEWS_LIST = 39
  72. Global Const CINEWS_NEWGROUPS = 40
  73. Global Const CINEWS_NEWNEWS = 41
  74. Global Const CINEWS_NEXT = 42
  75. Global Const CINEWS_POST = 43
  76. Global Const CINEWS_QUIT = 44
  77. Global Const CINEWS_SLAVE = 45
  78. Global Const CINEWS_HEAD = 46
  79. Global Const CINEWS_BODY = 47
  80.  
  81. '~~~ Imap GetLastError constants (CIIMAP4 is 32 bit only)
  82. Global Const IMAP_WRONGSTATE = 2000 'Server in wrong state to execute given command.
  83. Global Const IMAP_TIMEOUT = 2001 'Timed out
  84. Global Const IMAP_INVALIDPARAMETER = 2002 'An invalid parameter was sent
  85. Global Const IMAP_NOWINDOW = 2003 'Couldn't create hidden window required for WinSock 1.x.
  86.  
  87. '~~~ Winsock error constants
  88. '~~~ Winsock Base Error Value
  89. Global Const WSABASEERR = 10000
  90.  
  91. '~~~ Base + ...
  92. Global Const WSAEINTR = (WSABASEERR + 4)
  93. Global Const WSAEBADF = (WSABASEERR + 9)
  94. Global Const WSAEACCES = (WSABASEERR + 13)
  95. Global Const WSAEFAULT = (WSABASEERR + 14)
  96. Global Const WSAEINVAL = (WSABASEERR + 22)
  97. Global Const WSAEMFILE = (WSABASEERR + 24)
  98.  
  99. '~~~ Intentional number sequence skip to
  100. '~~~ keep consistent with Winsock numbering
  101. Global Const WSAEWOULDBLOCK = (WSABASEERR + 35)
  102. Global Const WSAEINPROGRESS = (WSABASEERR + 36)
  103. Global Const WSAEALREADY = (WSABASEERR + 37)
  104. Global Const WSAENOTSOCK = (WSABASEERR + 38)
  105. Global Const WSAEDESTADDRREQ = (WSABASEERR + 39)
  106. Global Const WSAEMSGSIZE = (WSABASEERR + 40)
  107. Global Const WSAEPROTOTYPE = (WSABASEERR + 41)
  108. Global Const WSAENOPROTOOPT = (WSABASEERR + 42)
  109. Global Const WSAEPROTONOSUPPORT = (WSABASEERR + 43)
  110. Global Const WSAESOCKTNOSUPPORT = (WSABASEERR + 44)
  111. Global Const WSAEOPNOTSUPP = (WSABASEERR + 45)
  112. Global Const WSAEPFNOSUPPORT = (WSABASEERR + 46)
  113. Global Const WSAEAFNOSUPPORT = (WSABASEERR + 47)
  114. Global Const WSAEADDRINUSE = (WSABASEERR + 48)
  115. Global Const WSAEADDRNOTAVAIL = (WSABASEERR + 49)
  116. Global Const WSAENETDOWN = (WSABASEERR + 50)
  117. Global Const WSAENETUNREACH = (WSABASEERR + 51)
  118. Global Const WSAENETRESET = (WSABASEERR + 52)
  119. Global Const WSAECONNABORTED = (WSABASEERR + 53)
  120. Global Const WSAECONNRESET = (WSABASEERR + 54)
  121. Global Const WSAENOBUFS = (WSABASEERR + 55)
  122. Global Const WSAEISCONN = (WSABASEERR + 56)
  123. Global Const WSAENOTCONN = (WSABASEERR + 57)
  124. Global Const WSAESHUTDOWN = (WSABASEERR + 58)
  125. Global Const WSAETOOMANYREFS = (WSABASEERR + 59)
  126. Global Const WSAETIMEDOUT = (WSABASEERR + 60)
  127. Global Const WSAECONNREFUSED = (WSABASEERR + 61)
  128. Global Const WSAELOOP = (WSABASEERR + 62)
  129. Global Const WSAENAMETOOLONG = (WSABASEERR + 63)
  130. Global Const WSAEHOSTDOWN = (WSABASEERR + 64)
  131. Global Const WSAEHOSTUNREACH = (WSABASEERR + 65)
  132. Global Const WSAENOTEMPTY = (WSABASEERR + 66)
  133. Global Const WSAEPROCLIM = (WSABASEERR + 67)
  134. Global Const WSAEUSERS = (WSABASEERR + 68)
  135. Global Const WSAEDQUOT = (WSABASEERR + 69)
  136. Global Const WSAESTALE = (WSABASEERR + 70)
  137. Global Const WSAEREMOTE = (WSABASEERR + 71)
  138.  
  139. '~~~ Intentional number sequence skip to
  140. '~~~ keep consistent with Winsock numbering
  141. Global Const WSASYSNOTREADY = (WSABASEERR + 91)
  142. Global Const WSAVERNOTSUPPORTED = (WSABASEERR + 92)
  143. Global Const WSANOTINITIALISED = (WSABASEERR + 93)
  144.  
  145. '~~~ Intentional number sequence skip to
  146. '~~~ keep consistent with Winsock numbering
  147. Global Const WSAEDISCON = (WSABASEERR + 101)
  148.  
  149. '~~~ Intentional number sequence skip to
  150. '~~~ keep consistent with Winsock numbering
  151. Global Const WSAHOST_NOT_FOUND = (WSABASEERR + 1001)
  152. Global Const HOST_NOT_FOUND = WSAHOST_NOT_FOUND
  153. Global Const WSATRY_AGAIN = (WSABASEERR + 1002)
  154. Global Const TRY_AGAIN = WSATRY_AGAIN
  155. Global Const WSANO_RECOVERY = (WSABASEERR + 1003)
  156. Global Const NO_RECOVERY = WSANO_RECOVERY
  157. Global Const WSANO_DATA = (WSABASEERR + 1004)
  158. Global Const NO_DATA = WSANO_DATA
  159. Global Const WSANO_ADDRESS = WSANO_DATA
  160. Global Const NO_ADDRESS = WSANO_ADDRESS
  161.  
  162. 'Default ports for various protocols
  163. Global Const DEFAULT_PORT_SMTP = 25
  164. Global Const DEFAULT_PORT_POP = 110
  165. Global Const DEFAULT_PORT_FTP = 21
  166. Global Const DEFAULT_PORT_HTTP = 80
  167. Global Const DEFAULT_PORT_NNTP = 119
  168.  
  169. Public Function WSAErrDescription(Err As Integer, Optional ByRef ConstName As Variant) As String
  170.  
  171. Dim TmpConstName As String, TmpErrDescription As String
  172.  
  173. Select Case Err
  174.     Case -10000: TmpConstName = "WSABASEERR": TmpErrDescription = "No Error"
  175.     Case 4: TmpConstName = "WSAEINTR": TmpErrDescription = "Interrupted system call"
  176.     Case 9: TmpConstName = "WSAEBADF": TmpErrDescription = "Bad file number"
  177.     Case 13: TmpConstName = "WSAEACCES": TmpErrDescription = "Permission denied"
  178.     Case 14: TmpConstName = "WSAEFAULT": TmpErrDescription = "Bad address"
  179.     Case 22: TmpConstName = "WSAEINVAL": TmpErrDescription = "Invalid argument"
  180.     Case 24: TmpConstName = "WSAEMFILE": TmpErrDescription = "Too many open files"
  181.     Case 35: TmpConstName = "WSAEWOULDBLOCK": TmpErrDescription = "Operation would block"
  182.     Case 36: TmpConstName = "WSAEINPROGRESS": TmpErrDescription = "Operation now in progress"
  183.     Case 37: TmpConstName = "WSAEALREADY": TmpErrDescription = "Operation already in progress"
  184.     Case 38: TmpConstName = "WSAENOTSOCK": TmpErrDescription = "Socket operation on non-socket"
  185.     Case 39: TmpConstName = "WSAEDESTADDRREQ": TmpErrDescription = "Destination address required"
  186.     Case 40: TmpConstName = "WSAEMSGSIZE": TmpErrDescription = "Message too long"
  187.     Case 41: TmpConstName = "WSAEPROTOTYPE": TmpErrDescription = "Protocol wrong type for socket"
  188.     Case 42: TmpConstName = "WSAENOPROTOOPT": TmpErrDescription = "Bad protocol option"
  189.     Case 43: TmpConstName = "WSAEPROTONOSUPPORT": TmpErrDescription = "Protocol not supported"
  190.     Case 44: TmpConstName = "WSAESOCKTNOSUPPORT": TmpErrDescription = "Socket type not supported"
  191.     Case 45: TmpConstName = "WSAEOPNOTSUPP": TmpErrDescription = "Operation not supported on socket"
  192.     Case 46: TmpConstName = "WSAEPFNOSUPPORT": TmpErrDescription = "Protocol family not supported"
  193.     Case 47: TmpConstName = "WSAEAFNOSUPPORT": TmpErrDescription = "Address family not supported by protocol family"
  194.     Case 48: TmpConstName = "WSAEADDRINUSE": TmpErrDescription = "Address already in use"
  195.     Case 49: TmpConstName = "WSAEADDRNOTAVAIL": TmpErrDescription = "Can't assign requested address"
  196.     Case 50: TmpConstName = "WSAENETDOWN": TmpErrDescription = "Network is down"
  197.     Case 51: TmpConstName = "WSAENETUNREACH": TmpErrDescription = "Network is unreachable"
  198.     Case 52: TmpConstName = "WSAENETRESET": TmpErrDescription = "Net dropped connection or reset"
  199.     Case 53: TmpConstName = "WSAECONNABORTED": TmpErrDescription = "Software caused connection abort"
  200.     Case 54: TmpConstName = "WSAECONNRESET": TmpErrDescription = "Connection reset by peer"
  201.     Case 55: TmpConstName = "WSAENOBUFS": TmpErrDescription = "No buffer space available"
  202.     Case 56: TmpConstName = "WSAEISCONN": TmpErrDescription = "Socket is already connected"
  203.     Case 57: TmpConstName = "WSAENOTCONN": TmpErrDescription = "Socket is not connected"
  204.     Case 58: TmpConstName = "WSAESHUTDOWN": TmpErrDescription = "Can't send after socket shutdown"
  205.     Case 59: TmpConstName = "WSAETOOMANYREFS": TmpErrDescription = "Too many references, can't splice"
  206.     Case 60: TmpConstName = "WSAETIMEDOUT": TmpErrDescription = "Connection timed out"
  207.     Case 61: TmpConstName = "WSAECONNREFUSED": TmpErrDescription = "Connection refused"
  208.     Case 62: TmpConstName = "WSAELOOP": TmpErrDescription = "Too many levels of symbolic links"
  209.     Case 63: TmpConstName = "WSAENAMETOOLONG": TmpErrDescription = "File name too long"
  210.     Case 64: TmpConstName = "WSAEHOSTDOWN": TmpErrDescription = "Host is down"
  211.     Case 65: TmpConstName = "WSAEHOSTUNREACH": TmpErrDescription = "No Route to Host"
  212.     Case 66: TmpConstName = "WSAENOTEMPTY": TmpErrDescription = "Directory not empty"
  213.     Case 67: TmpConstName = "WSAEPROCLIM": TmpErrDescription = "Too many processes"
  214.     Case 68: TmpConstName = "WSAEUSERS": TmpErrDescription = "Too many users"
  215.     Case 69: TmpConstName = "WSAEDQUOT": TmpErrDescription = "Disc Quota Exceeded"
  216.     Case 70: TmpConstName = "WSAESTALE": TmpErrDescription = "Stale NFS file handle"
  217.     Case 91: TmpConstName = "WSASYSNOTREADY": TmpErrDescription = "Network SubSystem is unavailable"
  218.     Case 92: TmpConstName = "WSAVERNOTSUPPORTED": TmpErrDescription = "WINSOCK DLL Version out of range"
  219.     Case 93: TmpConstName = "WSANOTINITIALISED": TmpErrDescription = "Successful WSASTARTUP not yet performed"
  220.     Case 71: TmpConstName = "WSAEREMOTE": TmpErrDescription = "Too many levels of remote in path"
  221.     Case 1001: TmpConstName = "WSAHOST_NOT_FOUND": TmpErrDescription = "Host not found"
  222.     Case 1002: TmpConstName = "WSATRY_AGAIN": TmpErrDescription = "Non-Authoritative Host not found"
  223.     Case 1003: TmpConstName = "WSANO_RECOVERY": TmpErrDescription = "Non-Recoverable errors: FORMERR, REFUSED, NOTIMP"
  224.     Case 1004: TmpConstName = "WSANO_DATA or WSANO_ADDRESS": TmpErrDescription = "Valid name, no data record of requested type *OR* No address, look for MX record"
  225.     Case Else: TmpConstName = "": TmpErrDescription = "Unknown Error"
  226. End Select
  227.  
  228. If Not IsMissing(ConstName) Then
  229.     ConstName = TmpConstName
  230. End If
  231.  
  232. WSAErrDescription = TmpErrDescription
  233.  
  234. End Function
  235. Public Function InternetErrDescription(Err As Long, Optional ByRef ConstName As Variant) As String
  236.  
  237. '~~~ A long description was not found for some of the error numbers,
  238. '~~~ the constant name has been used in it place.
  239.  
  240. Dim TmpConstName As String, TmpErrDescription As String
  241.  
  242. Select Case Err
  243.     Case 80: TmpConstName = "": TmpErrDescription = "File Exists"
  244.     Case 87: TmpConstName = "": TmpErrDescription = "Bad or Missing Parameter"
  245.     Case 12001: TmpConstName = "ERROR_INTERNET_OUT_OF_HANDLES": TmpErrDescription = "No more handles could be generated at this time."
  246.     Case 12002: TmpConstName = "ERROR_INTERNET_TIMEOUT": TmpErrDescription = "The request has timed out."
  247.     Case 12003: TmpConstName = "ERROR_INTERNET_EXTENDED_ERROR": TmpErrDescription = "An extended error was returned from the server. This is typically a string or buffer containing a verbose error message. Call InternetGetLastResponseInfo to retrieve the error text."
  248.     Case 12004: TmpConstName = "ERROR_INTERNET_INTERNAL_ERROR ": TmpErrDescription = "An internal error has occurred. "
  249.     Case 12005: TmpConstName = "ERROR_INTERNET_INVALID_URL": TmpErrDescription = "The URL is invalid."
  250.     Case 12006: TmpConstName = "ERROR_INTERNET_UNRECOGNIZED_SCHEME": TmpErrDescription = "The URL scheme could not be recognized, or is not supported. "
  251.     Case 12007: TmpConstName = "ERROR_INTERNET_NAME_NOT_RESOLVED": TmpErrDescription = "The server name could not be resolved."
  252.     Case 12008: TmpConstName = "ERROR_INTERNET_PROTOCOL_NOT_FOUND": TmpErrDescription = "The requested protocol could not be located. "
  253.     Case 12009: TmpConstName = "ERROR_INTERNET_INVALID_OPTION": TmpErrDescription = "A request to InternetQueryOption or InternetSetOption specified an invalid option value."
  254.     Case 12010: TmpConstName = "ERROR_INTERNET_BAD_OPTION_LENGTH": TmpErrDescription = "The length of an option supplied to InternetQueryOption or InternetSetOption is incorrect for the type of option specified."
  255.     Case 12011: TmpConstName = "ERROR_INTERNET_OPTION_NOT_SETTABLE": TmpErrDescription = "The request option can not be set, only queried. "
  256.     Case 12012: TmpConstName = "ERROR_INTERNET_SHUTDOWN": TmpErrDescription = "The Win32 Internet function support is being shut down or unloaded."
  257.     Case 12013: TmpConstName = "ERROR_INTERNET_INCORRECT_USER_NAME ": TmpErrDescription = "The request to connect and log on to an FTP server could not be completed because the supplied user name is incorrect."
  258.     Case 12014: TmpConstName = "ERROR_INTERNET_INCORRECT_PASSWORD ": TmpErrDescription = "The request to connect and log on to an FTP server could not be completed because the supplied password is incorrect."
  259.     Case 12015: TmpConstName = "ERROR_INTERNET_LOGIN_FAILURE ": TmpErrDescription = "The request to connect to and log on to an FTP server failed. "
  260.     Case 12016: TmpConstName = "ERROR_INTERNET_INVALID_OPERATION": TmpErrDescription = "The requested operation is invalid."
  261.     Case 12017: TmpConstName = "ERROR_INTERNET_OPERATION_CANCELLED": TmpErrDescription = "The operation was canceled, usually because the handle on which the request was operating was closed before the operation completed."
  262.     Case 12018: TmpConstName = "ERROR_INTERNET_INCORRECT_HANDLE_TYPE ": TmpErrDescription = "The type of handle supplied is incorrect for this operation."
  263.     Case 12019: TmpConstName = "ERROR_INTERNET_INCORRECT_HANDLE_STATE": TmpErrDescription = "The requested operation cannot be carried out because the handle supplied is not in the correct state."
  264.     Case 12020: TmpConstName = "ERROR_INTERNET_NOT_PROXY_REQUEST": TmpErrDescription = "The request cannot be made via a proxy."
  265.     Case 12021: TmpConstName = "ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND": TmpErrDescription = "A required registry value could not be located."
  266.     Case 12022: TmpConstName = "ERROR_INTERNET_BAD_REGISTRY_PARAMETER": TmpErrDescription = "A required registry value was located but is an incorrect type or has an invalid value."
  267.     Case 12023: TmpConstName = "ERROR_INTERNET_NO_DIRECT_ACCESS": TmpErrDescription = "Direct network access cannot be made at this time."
  268.     Case 12024: TmpConstName = "ERROR_INTERNET_NO_CONTEXT": TmpErrDescription = "An asynchronous request could not be made because a zero context value was supplied."
  269.     Case 12025: TmpConstName = "ERROR_INTERNET_NO_CALLBACK": TmpErrDescription = "An asynchronous request could not be made because a callback function has not been set."
  270.     Case 12026: TmpConstName = "ERROR_INTERNET_REQUEST_PENDING": TmpErrDescription = "The required operation could not be completed because one or more requests are pending."
  271.     Case 12027: TmpConstName = "ERROR_INTERNET_INCORRECT_FORMAT": TmpErrDescription = "The format of the request is invalid."
  272.     Case 12028: TmpConstName = "ERROR_INTERNET_ITEM_NOT_FOUND": TmpErrDescription = "The requested item could not be located."
  273.     Case 12029: TmpConstName = "ERROR_INTERNET_CANNOT_CONNECT": TmpErrDescription = "The attempt to connect to the server failed."
  274.     Case 12030: TmpConstName = "ERROR_INTERNET_CONNECTION_ABORTED": TmpErrDescription = "The connection with the server has been terminated."
  275.     Case 12031: TmpConstName = "ERROR_INTERNET_CONNECTION_RESET": TmpErrDescription = "The connection with the server has been reset."
  276.     Case 12032: TmpConstName = "ERROR_INTERNET_FORCE_RETRY": TmpErrDescription = "Calls for the Win32 Internet function to redo the request."
  277.     Case 12033: TmpConstName = "ERROR_INTERNET_PROXY_REQUEST": TmpErrDescription = "ERROR_INTERNET_PROXY_REQUEST"
  278.     Case 12034: TmpConstName = "ERROR_INTERNET_NEED_UI": TmpErrDescription = "ERROR_INTERNET_NEED_UI"
  279.     
  280.     Case 12036: TmpConstName = "ERROR_INTERNET_HANDLE_EXISTS": TmpErrDescription = "The request failed because the handle already exists."
  281.     Case 12037: TmpConstName = "ERROR_INTERNET_SEC_CERT_DATE_INVALID": TmpErrDescription = "ERROR_INTERNET_SEC_CERT_DATE_INVALID"
  282.     Case 12038: TmpConstName = "ERROR_INTERNET_SEC_CERT_CN_INVALID": TmpErrDescription = "ERROR_INTERNET_SEC_CERT_CN_INVALID"
  283.     Case 12039: TmpConstName = "ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR": TmpErrDescription = "ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR"
  284.     Case 12040: TmpConstName = "ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR": TmpErrDescription = "ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR"
  285.     Case 12041: TmpConstName = "ERROR_INTERNET_MIXED_SECURITY": TmpErrDescription = "Indicates that the content is not entirely secure. Some of the content being viewed may have come from unsecured servers."
  286.     Case 12042: TmpConstName = "ERROR_INTERNET_CHG_POST_IS_NON_SECURE": TmpErrDescription = "ERROR_INTERNET_CHG_POST_IS_NON_SECURE"
  287.     Case 12043: TmpConstName = "ERROR_INTERNET_POST_IS_NON_SECURE": TmpErrDescription = "ERROR_INTERNET_POST_IS_NON_SECURE"
  288.     Case 12044: TmpConstName = "ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED": TmpErrDescription = "ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED"
  289.     Case 12045: TmpConstName = "ERROR_INTERNET_INVALID_CA": TmpErrDescription = "ERROR_INTERNET_INVALID_CA"
  290.     Case 12046: TmpConstName = "ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP": TmpErrDescription = "Client authorization is not set up on this computer"
  291.     Case 12047: TmpConstName = "ERROR_INTERNET_ASYNC_THREAD_FAILED": TmpErrDescription = "ERROR_INTERNET_ASYNC_THREAD_FAILED"
  292.     Case 12048: TmpConstName = "ERROR_INTERNET_REDIRECT_SCHEME_CHANGE": TmpErrDescription = "ERROR_INTERNET_REDIRECT_SCHEME_CHANGE"
  293.     Case 12110: TmpConstName = "ERROR_FTP_TRANSFER_IN_PROGRESS": TmpErrDescription = "The FTP operation was not completed because the session was aborted."
  294.     Case 12111: TmpConstName = "ERROR_FTP_DROPPED": TmpErrDescription = "Non-Recoverable errors: FORMERR, REFUSED, NOTIMP"
  295.     Case Else:  TmpConstName = "": TmpErrDescription = "Unknown Error"
  296. End Select
  297.  
  298. If Not IsMissing(ConstName) Then
  299.     ConstName = TmpConstName
  300. End If
  301.  
  302. InternetErrDescription = TmpErrDescription
  303.  
  304. End Function
  305.  
  306.